--[[ 编码: WMS-22-04 名称: 发货单-定版后 作者:HAN 日期:2025-1-29 级别:固定 (说明本段代码在项目中不太会变化) 函数: AfterStateChange 功能: -- 删除系统中和发货单号相关的最大行号记录 -- 【发货单明细】设置为定版 -- 如果 C_AUTO_SORTING = Y 触发【发货单】的{创建分拣单}事件 更改记录: V7.0 -- 如果C_AUTO_SORTING = Y 触发【发货单】的{创建分拣单}事件 --]] json = require ("json") mobox = require ("OILua_JavelinExt") m3 = require("oi_base_mobox") function AfterStateChange ( strLuaDEID ) local nRet, strRetInfo -- 获取 S_NO nRet, strRetInfo = mobox.getCurEditDataObjAttr( strLuaDEID, "S_NO","S_STATE", "C_AUTO_SORTING" ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "获取当前编辑属性失败! "..strRetInfo ) end local obj_attrs = json.decode( strRetInfo ) local shipping_no = obj_attrs[1].value -- 发货单编号 local state = obj_attrs[2].value -- 发货单状态 local auto_sorting = obj_attrs[3].value -- 系统自动生成分拣单 if ( shipping_no == '') then lua.Warning( strLuaDEID, debug.getinfo(1), "发货单编号为空! " ) return end -- 清除 shipping_no 的最大行号记录 nRet, strRetInfo = mobox.removeSerialNumber( "行号", shipping_no ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "removeSerialNumber() 失败! "..strRetInfo ) end -- 设置【发货单明细】的状态=定版 local strCondition = "S_SHIPPING_NO = '"..shipping_no.."'" nRet, strRetInfo = mobox.setDataObjStateByCondition( strLuaDEID, "Shipping_Detail", strCondition, state ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "setDataObjStateByCondition() 失败! "..strRetInfo ) end -- V7.0 -- 如果需要系统自动生成分拣单 if ( auto_sorting == 'Y') then -- 触发【发货单】的{创建分拣单}脚本 --获取当前编辑的数据对象标识 local strClsID, strObjID nRet, strClsID, strObjID = mobox.getCurEditDataObjID( strLuaDEID ) if ( nRet ~=0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "获取当前对象标识失败!" ) end nRet, strRetInfo = mobox.triggerClsEvent( strLuaDEID, strClsID, strObjID, "创建分拣单" ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "执行【发货单】创建分拣单脚本失败!"..strRetInfo ) end end end